Registering a listener object establishes a channel of communication between the GUI object and the listener.
The container (a ButtonDemo2
object) can be registered
as a listener for any of the components it contains.
When a ButtonDemo2
object is constructed we will register
it as an ActionListener
for its own button.
public class ButtonDemo2 extends JFrame implements ActionListener
{
JButton bChange;
public ButtonDemo2()
{
// choose the layout manager
getContentPane().setLayout( new FlowLayout() );
bChange = new JButton("Click Me!");
// register the buttonDemo object
// as the listener for the JButton.
bChange.addActionListener( this );
getContentPane().add( bChange );
}
public void actionPerformed( ActionEvent evt)
{
. . . . .
}
public static void main ( String[] args )
{
ButtonDemo2 frm = new ButtonDemo2();
. . . . .
}
}
Examine the statement:
bChange.addActionListener( this );
This statement is executed when a ButtonDemo2
object is constructed.
bChange
refers to the button.addActionListener()
ButtonDemo2
object.
this
means the object being constructed.bChange
, to run its method
addActionListener()
to register the frame (this
)
as a listener
for button clicks.actionEvents
from the button it contains.actionPerformed()
method
You might think that the ButtonDemo2
frame should
automatically be registered as the listener for all of the GUI components it
contains.
But this would eliminate the flexibility that is needed for more complicated
GUI applications.